package com.tian.common.core.domain;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.serializer.ValueFilter;
import com.tian.common.enums.HttpResultType;
import com.tian.common.utils.typecast.ValueFilterImpl;

public class AjaxResult {
    private static final long serialVersionUID = 1L;

    /**
     * 状态码
     */
    private int code;

    /**
     * 返回内容
     */
    private String msg;

    /**
     * 数据对象
     */
    private Object data;

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }

    ValueFilterImpl valueFilter = new ValueFilterImpl();

    /**
     * 返回正确结果
     * @return
     */
    public String success() {
        setCode(HttpResultType.SUCCESS.value());
        setMsg("操作成功");
        String result = JSON.toJSONString(this);
        return result;
    }
    /**
     * 返回正确结果
     *
     * @param data 返回数据
     * @return
     */
    public String success(Object data) {
        setCode(HttpResultType.SUCCESS.value());
        setData(data);
        setMsg("操作成功");
        String result = JSON.toJSONString(this, valueFilter);
        return result;
    }

    /**
     * 返回正确结果
     *
     * @param msg  消息提示
     * @param data 返回数据
     * @return
     */
    public String success(String msg, Object data) {
        setCode(HttpResultType.SUCCESS.value());
        setData(data);
        setMsg(msg);
        String result = JSON.toJSONString(this);
        return result;
    }

    /**
     * 返回错误结果
     * @return
     */
    public String error() {
        setCode(HttpResultType.ERROR.value());
        String result = JSON.toJSONString(this);
        return result;
    }
    /**
     * 返回错误结果
     *
     * @param msg 错误消息提示
     * @return
     */
    public String error(String msg) {
        setCode(HttpResultType.ERROR.value());
        setMsg(msg);
        String result = JSON.toJSONString(this);
        return result;
    }

    /**
     * 返回警告信息
     *
     * @param msg 警告信息提示
     * @return
     */
    public String warn(String msg) {
        setCode(HttpResultType.WARN.value());
        setMsg(msg);
        String result = JSON.toJSONString(this);
        return result;
    }
}
